home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 6 / FM Towns Free Software Collection 6.iso / t_os / mtcnv / mtcnv43d.bas next >
BASIC Source File  |  1993-07-08  |  6KB  |  135 lines

  1. 100 '==================================
  2. 110 '
  3. 120 '        MSX→TOWNS グラフィック コンバーター  Ver 4.3d
  4. 130 '                    BSAVE形式→TIFF形式
  5. 140 '                       (FILES版)         Programed by YAZ
  6. 150 '==================================
  7. 1000 CLEAR ,,,70000:SCREEN@ 0:COLOR 7,0,7,0:PALETTE:CONSOLE 0,24,2
  8. 1010 DEFINT A-Z:DEFLNG F,M,P:DIM GRPDAT(256),IMA(27136),C(3,2)
  9. 1020 P=VARPTR(GRPDAT(0))
  10. 1030 *INIT
  11. 1040 SCREEN@ 0:CLS
  12. 1050 FOR I=0 TO 256:GRPDAT(I)=0:NEXT:DR$="":WILD$="":SDR$=""
  13. 1060 PRINT "読み込むドライブ ( A-Q ) :";:DR$=INPUT$(1):PRINT DR$
  14. 1070 IF (DR$<"A" OR "Q"<DR$) AND (DR$<"a" OR "q"<DR$) THEN 1060
  15. 1080 INPUT "ワイルドカード :",WILD$
  16. 1090 IF WILD$="" THEN WILD$=DR$+":*.*" ELSE WILD$=DR$+":"+WILD$
  17. 1100 ON ERROR GOTO 2270
  18. 1110 FILES WILD$
  19. 1120 ON ERROR GOTO 0
  20. 1130 INPUT"ファイルネーム : ";NME$
  21. 1140 IF NME$="" OR INSTR(NME$," ") OR LEN(NME$)>18 THEN 1130
  22. 1150 PRINT "スクリーンモード ( 1:SCREEN_5  2:SCREEN_6  3:SCREEN_7  4:SCREEN_8  5:19268色 )":PRINT ": ";
  23. 1160 A$=INPUT$(1):PRINT A$
  24. 1170 IF A$<"1" OR "5"<A$ THEN 1150
  25. 1180   IF A$="1" THEN SCRMODE=1:REP=256/2:S_SIZE=1
  26. 1190   IF A$="2" THEN SCRMODE=2
  27. 1200   IF A$="3" THEN SCRMODE=3:REP=512/2:S_SIZE=2
  28. 1210   IF A$="4" THEN SCRMODE=4
  29. 1220   IF A$="5" THEN SCRMODE=5
  30. 1230 MA_SK=0:INPUT"スキップバイト数";MA_SK
  31. 1240 PRINT "保存するドライブ ( A-P ) :";:SDR$=INPUT$(1):PRINT SDR$
  32. 1250 IF (SDR$<"A" OR "P"<SDR$) AND (SDR$<"a" OR "p"<SDR$) THEN 1240
  33. 1260 PRINT "全てよろしいですか? ( Y/N ) : ";:A$=INPUT$(1):PRINT A$
  34. 1270 IF A$="N" OR A$="n" THEN *INIT ELSE IF A$<>"Y" AND A$<>"y" THEN 1260
  35. 1280 *CONV
  36. 1290 ON ERROR GOTO 2270
  37. 1300 OPEN "I",#1,DR$+":"+NME$
  38. 1310 ON ERROR GOTO 0
  39. 1320 S$=INPUT$(1,#1):'IF ASC(S$)<>254 THEN PRINT "ファイルモードが違います"       :CLOSE #1:BEEP:WAIT 80:GOTO *INIT        '<---ファイルモードチェッカ
  40. 1330 MA_SI=ASC(INPUT$(1,#1))+ASC(INPUT$(1,#1))*256
  41. 1340 MA_SI=ASC(INPUT$(1,#1))+ASC(INPUT$(1,#1))*256-MA_SI-MA_SK
  42. 1350 S$=INPUT$(2+MA_SK,#1)
  43. 1360 CLS:ON SCRMODE GOSUB *SCR_5・7,*SCR_6,*SCR_5・7,*SCR_8,*SCR_12
  44. 1370 *SAVE
  45. 1380 X=0:Y=0
  46. 1390 IF SCRMODE=2 OR SCRMODE=3 THEN SX=511:SY=423 ELSE SX=255:SY=211
  47. 1400  LOCATE 14,22:PRINT USING"X=###  Y=###  SX=###  SY=###";X;Y;SX;SY
  48. 1410  LINE (X,Y)-(SX,SY),XOR,7,B
  49. 1420  XX=X:YY=Y:SXX=SX:SYY=SY
  50. 1430  A$=INKEY$
  51. 1440  IF NOT((CHR$(27)<=A$ AND A$<=CHR$(31)) OR A$="2" OR A$="4" OR A$="6"         OR A$="8" OR A$=CHR$(13)) THEN 1430
  52. 1450  X=X+(A$="4" AND X>0)-(A$="6" AND X<SX)
  53. 1460  Y=Y+(A$="8" AND Y>0)-(A$="2" AND Y<SY)
  54. 1470  SX=SX+(A$=CHR$(29) AND SX>X)-                                                                       (A$=CHR$(28) AND SX<(-639\((SCRMODE=5)-1)))
  55. 1480  SY=SY+(A$=CHR$(30) AND SY>Y)-                                                                       (A$=CHR$(31) AND SY<(-479\((SCRMODE=5)-1)))
  56. 1490  IF A$=CHR$(27) THEN *INIT
  57. 1500  LINE (XX,YY)-(SXX,SYY),XOR,7,B
  58. 1510  IF A$<>CHR$(13) THEN 1400
  59. 1520 SAVE@ SDR$+":"+LEFT$(NME$,INSTR(NME$,"."))+"TIF",(X,Y)-(SX,SY)
  60. 1530 GOTO *INIT
  61. 1540 *SCR_5・7
  62. 1550 LOCATE 0,22:PRINT "[ESC]=中止"
  63. 1560 Y=0:ES=0:FS=MA_SI-REP*Y
  64. 1570 WHILE FS>0 AND ES=0
  65. 1580  IF INKEY$=CHR$(27) THEN ES=-1:GOTO 1650
  66. 1590  IF FS>=REP THEN S$=INPUT$(REP-1,#1):S1$=INPUT$(1,#1) ELSE                    S$=INPUT$(FS,#1):S$=S$+STRING$(REP-1-LEN(S$),0):S1$=CHR$(0)
  67. 1600  FOR J=1 TO REP-1
  68. 1610   POKE P+J-1,ASC(MID$(S$,J,1))\16+(ASC(MID$(S$,J,1)) AND 15)*16
  69. 1620  NEXT:POKE P+REP-1,ASC(S1$)\16+(ASC(S1$) AND 15)*16
  70. 1630  PUT@A (0,Y*S_SIZE)-(REP*2-1,Y*S_SIZE),GRPDAT,,,S_SIZE
  71. 1640  Y=Y+1:FS=MA_SI-REP*Y
  72. 1650 WEND:CLOSE
  73. 1660 IF ES=-1 THEN LOCATE 0,22:PRINT "中止します。":WAIT 80:RETURN *INIT
  74. 1670 RETURN
  75. 1680 *SCR_6
  76. 1690 LOCATE 0,22:PRINT "[ESC]=中止"
  77. 1700 Y=0:ES=0:FS=MA_SI-128*Y
  78. 1710 WHILE FS>0 AND ES=0
  79. 1720  IF INKEY$=CHR$(27) THEN ES=-1:GOTO 1810
  80. 1730  IF FS>=128 THEN S$=INPUT$(128,#1) ELSE S$=INPUT$(FS,#1):                     S$=S$+STRING$(128-LEN(S$),0)
  81. 1740  FOR J=1 TO 128
  82. 1750   AS=ASC(MID$(S$,J,1))
  83. 1760   POKE P+J*2-2,AS \64+(AS \16 AND 3)*16
  84. 1770   POKE P+J*2-1,(AS \ 4 AND 3)+(AS AND 3)*16
  85. 1780  NEXT
  86. 1790  PUT@A (0,Y*2)-(511,Y*2),GRPDAT,,,2
  87. 1800 Y=Y+1:FS=MA_SI-128*Y
  88. 1810 WEND:CLOSE
  89. 1820 IF ES=-1 THEN LOCATE 0,22:PRINT "中止します。":WAIT 80:RETURN *INIT
  90. 1830 RETURN
  91. 1840 *SCR_8
  92. 1850 SCREEN@ 2:LOCATE 0,22:PRINT "[ESC]=中止"
  93. 1860 Y=0:ES=0:FS=MA_SI-256*Y
  94. 1870 WHILE FS>0 AND ES=0
  95. 1880  IF INKEY$=CHR$(27) THEN ES=-1:GOTO 1950
  96. 1890  IF FS>=256 THEN S$=INPUT$(255,#1):S1$=INPUT$(1,#1) ELSE                     S$=INPUT$(FS,#1):S$=S$+STRING$(255-LEN(S$),0):S1$=CHR$(0)
  97. 1900  FOR J=1 TO 255
  98. 1910   POKE P+J-1,ASC(MID$(S$,J,1))
  99. 1920  NEXT:POKE P+255,ASC(S1$)
  100. 1930  PUT@A (0,Y)-(255,Y),GRPDAT
  101. 1940  Y=Y+1:FS=MA_SI-256*Y
  102. 1950 WEND:CLOSE
  103. 1960 IF ES=-1 THEN LOCATE 0,22:PRINT "中止します。":WAIT 80:RETURN *INIT
  104. 1970 RETURN
  105. 1980 *SCR_12
  106. 1990 GOSUB *SCR_8
  107. 2000 GET@A (0,0)-(255,211),IMA
  108. 2010 SCREEN@ 1:CLS:LOCATE 0,22:PRINT "[ESC]=中止"
  109. 2020 FOR H=0 TO 211
  110. 2030  IF INKEY$=CHR$(27) THEN H=211:NEXT:LOCATE 0,22:PRINT "中止します。":        WAIT 80:GOTO *INIT
  111. 2040  FOR I=0 TO 126 STEP 2
  112. 2050   FSUB0=IMA(H*128+I)-(IMA(H*128+I)<0)*65536
  113. 2060   FSUB1=IMA(H*128+I+1)-(IMA(H*128+I+1)<0)*65536
  114. 2070   Y0=(FSUB0 \ 8)AND 31:Y1=(FSUB0 \ 2048)AND 31
  115. 2080   Y2=(FSUB1 \ 8)AND 31:Y3=(FSUB1 \ 2048)AND 31
  116. 2090   K=((FSUB0 \ 32)AND 56)+(FSUB0 AND 7):K=K+(K>31)*64
  117. 2100   J=((FSUB1 \ 32)AND 56)+(FSUB1 AND 7):J=J+(J>31)*64
  118. 2110   C(0,0)=Y0+K:C(0,1)=Y0+J:C(0,2)=Y0*5/4-J\2-K\4
  119. 2120   C(1,0)=Y1+K:C(1,1)=Y1+J:C(1,2)=Y1*5/4-J\2-K\4
  120. 2130   C(2,0)=Y2+K:C(2,1)=Y2+J:C(2,2)=Y2*5/4-J\2-K\4
  121. 2140   C(3,0)=Y3+K:C(3,1)=Y3+J:C(3,2)=Y3*5/4-J\2-K\4
  122. 2150   FOR L=0 TO 3
  123. 2160    FOR M=0 TO 2
  124. 2170     IF C(L,M)<0 THEN C(L,M)=0
  125. 2180     IF C(L,M)>31 THEN C(L,M)=31
  126. 2190   NEXT:NEXT
  127. 2200   POKE P+I*4  ,C(0,0)*1024+C(0,1)*32+C(0,2),2
  128. 2210   POKE P+I*4+2,C(1,0)*1024+C(1,1)*32+C(1,2),2
  129. 2220   POKE P+I*4+4,C(2,0)*1024+C(2,1)*32+C(2,2),2
  130. 2230   POKE P+I*4+6,C(3,0)*1024+C(3,1)*32+C(3,2),2
  131. 2240  NEXT
  132. 2250  PUT@A (0,H)-(255,H),GRPDAT
  133. 2260 NEXT:RETURN
  134. 2270 PRINT "該当ファイルなし":BEEP:WAIT 80:RESUME *INIT
  135.